package fechas;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

public class FechaUtilsTestMartin {
	
	/**
	 * Tests de la clase FechaUtils
	 * @author Martin Zavatto
	 *
	 */
	
	String fechaFormateada;
	String fechaLatino;
	String fechaErroneaLatino;
	String fechaAmericano;
	String fechaErroneaAmericano;
	String fechaIso8606;
	String fechaErroneaIso8606;
	String cualquierCosa;
	String fechaUnDiaAnterior;

	@Before
	public void setUp() throws Exception {
		fechaIso8606 = "1986-02-06";
		fechaErroneaIso8606 ="1986-02/13";
		fechaAmericano = "02-06-1986";
		fechaErroneaAmericano="02-33-1986";
		fechaLatino = "06/02/1986";
		fechaErroneaLatino = "06/13/1986";
		fechaFormateada = "Thu Feb 06 00:00:00 ART 1986";
		cualquierCosa = "jsklfshjfwuie";
		fechaUnDiaAnterior="1986-02-05";
	}

	@Test
	public void stringToDateLatinoTest() {
		//prueba stringToDate para formato latino
		Assert.assertNotNull(FechaUtils.stringToDateLatino(fechaLatino));
		Assert.assertEquals(fechaFormateada, FechaUtils.stringToDateLatino(fechaLatino).toString());
		Assert.assertNull(FechaUtils.stringToDateLatino(null));
		Assert.assertNull(FechaUtils.stringToDateLatino(fechaErroneaLatino));
	}
	
	
	@Test
	public void stringToDateAmericanoTest(){
		//prueba stringToDate para formato americano
		Assert.assertNotNull(FechaUtils.stringToDateAmericano(fechaAmericano));
		Assert.assertEquals(fechaFormateada, FechaUtils.stringToDateAmericano(fechaAmericano).toString());
		Assert.assertNull(FechaUtils.stringToDateAmericano(null));
		Assert.assertNull(FechaUtils.stringToDateAmericano(fechaErroneaAmericano));
		
	}
	
	@Test
	public void stringToDateIso8606Test(){
		//prueba stringToDate para formato ISO
		Assert.assertNotNull(FechaUtils.stringToDateIso8606(fechaIso8606));
		Assert.assertEquals(fechaFormateada, FechaUtils.stringToDateIso8606(fechaIso8606).toString());
		Assert.assertNull(FechaUtils.stringToDateIso8606(null));
		Assert.assertNull(FechaUtils.stringToDateIso8606(fechaErroneaIso8606));
		
	}
	
	@Test
	public void stringToDateTest(){
		//prueba stringToDateFlexible
		Assert.assertEquals(fechaFormateada,FechaUtils.stringToDateFlexible(fechaAmericano).toString());
		Assert.assertEquals(fechaFormateada,FechaUtils.stringToDateFlexible(fechaLatino).toString());
		Assert.assertEquals(fechaFormateada,FechaUtils.stringToDateFlexible(fechaIso8606).toString());
		Assert.assertNull(FechaUtils.stringToDateFlexible(fechaErroneaAmericano));
		Assert.assertNull(FechaUtils.stringToDateFlexible(cualquierCosa));
	}
	
	@Test
	public void diferenciaEntreFechasEnDiasTest(){
		Assert.assertEquals(1,FechaUtils.diferenciaEntreFechasEnDias(fechaLatino, fechaUnDiaAnterior));
		Assert.assertEquals("Ok", -1,FechaUtils.diferenciaEntreFechasEnDias(fechaErroneaAmericano, fechaLatino));
		Assert.assertEquals("Ok", -1,FechaUtils.diferenciaEntreFechasEnDias(null, fechaLatino));
	}
	
	@Test
	public void esFechaAnteriorTest(){
		Assert.assertTrue(FechaUtils.esFechaAnterior(fechaUnDiaAnterior,fechaLatino));
		Assert.assertFalse(FechaUtils.esFechaAnterior(fechaLatino,fechaLatino));
		Assert.assertFalse(FechaUtils.esFechaAnterior(fechaErroneaIso8606,fechaLatino));
	}
	
	
	

}
